package expressions;

/**
 * Represents a function that is passed arguments separated by commas in the
 * usual fashion.
 * 
 * Unlike most ParentExpressions, functions do not necessarily receive the
 * correct number of arguments when put into a tree. Since the syntax for
 * functions is very specific, functions merely receive the number of arguments
 * that is passed to them.
 */
public abstract class Function<T> extends Operator<T>
{
    /**
     * Constructs a new function.
     */
    public Function()
    {
        super(0);
    }

    /**
     * Functions have the highest priority because they should not force any
     * other Operators to be built.
     */
    @Override
    public int priority()
    {
        return 10;
    }
}
